package com.xm.linxiaogang.utils

import android.content.Context
import android.view.inputmethod.InputMethodManager
import android.widget.EditText

/**
 * 窗口显示相关工具类
 */
object DisplayUtils {

    /**
     * dp单位 转成 px单位
     *
     * @param context 上下文
     * @param dpValue 尺寸dip
     * @return
     */
    fun dp2px(context: Context, dpValue: Float): Int {
        val scale = context.resources.displayMetrics.density
        return (dpValue * scale + 0.5f).toInt()
    }

    /**
     * sp单位 转成 px单位
     *
     * @param context 上下文
     * @param spValue SP值
     * @return
     */
    fun sp2px(context: Context, spValue: Float): Int {
        val fontScale = context.resources.displayMetrics.scaledDensity
        return (spValue * fontScale + 0.5f).toInt()
    }

    /**
     * px单位 转成 dp单位
     *
     * @param context 上下文
     * @param pxValue 尺寸像素
     * @return
     */
    fun px2dp(context: Context, pxValue: Float): Int {
        val scale = context.resources.displayMetrics.density
        return (pxValue / scale + 0.5f).toInt()
    }

    /**
     * px单位 转成 sp单位
     *
     * @param context 上下文
     * @param pxValue 尺寸像素
     * @return
     */
    fun px2sp(context: Context, pxValue: Float): Int {
        val fontScale = context.resources.displayMetrics.scaledDensity
        return (pxValue / fontScale + 0.5f).toInt()
    }


    /**
     * 获取屏幕宽度
     *
     * @param context Context
     * @return
     */
    fun getScreenW(context: Context): Int {
        val dm = context.resources.displayMetrics
        return dm.widthPixels
    }

    /**
     * 获取屏幕高度
     *
     * @param context Context
     * @return
     */
    fun getScreenH(context: Context): Int {
        val dm = context.resources.displayMetrics
        return dm.heightPixels
    }

    /**
     * 隐藏输入法弹窗
     *
     * @param editText
     */
    fun hideKeyboard(editText: EditText) {
        val imm = editText.context
            .getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
        imm.hideSoftInputFromWindow(editText.windowToken, 0)
    }
}